lib,src,test,doc: add node:ffi module#62072
Conversation
|
Review requested:
|
|
Yes |
Qard
left a comment
There was a problem hiding this comment.
Looks very cool! I'm glad to see someone has picked this back up. 🙂
I did a quick review and it all looks good. My only comment is there seems to be a bunch of static strings and a private symbol which we might want to define in env_properties.h.
9462e4d to
631d73a
Compare
Failed to start CI⚠ No approving reviews found ✘ Refusing to run CI on potentially unsafe PRhttps://github.com/nodejs/node/actions/runs/23272564448 |
|
@anonrig I cancelled that CI run to save resources. I started https://ci.nodejs.org/job/node-test-pull-request/71877/ manually, and it's currently running. |
given that this is still draft and @cjihrig indicated it's not ready for review, a sign off is not yet appropriate.
given that this is still draft and @cjihrig indicated it's not ready for review, a sign off is not yet appropriate.
|
@cjihrig @ShogunPanda this now conflicts, can you rebase? |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #62072 +/- ##
==========================================
- Coverage 89.81% 89.69% -0.13%
==========================================
Files 699 706 +7
Lines 216331 218043 +1712
Branches 41355 41726 +371
==========================================
+ Hits 194294 195565 +1271
- Misses 14156 14411 +255
- Partials 7881 8067 +186
🚀 New features to boost your workflow:
|
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
|
@justjake I see your objection but I'd like to land this since there are already a lot of commits. We can eventually follow up your proposal in a future PR, what do you think? |
Commit Queue failed- Loading data for nodejs/node/pull/62072 ✔ Done loading data for nodejs/node/pull/62072 ----------------------------------- PR info ------------------------------------ Title lib,src,test,doc: add node:ffi module (#62072) Author Colin Ihrig <cjihrig@gmail.com> (@cjihrig) Branch cjihrig:ffi -> nodejs:main Labels build, needs-ci, dependencies Commits 23 - lib,src,test,doc: add node:ffi module - ffi: Refactor to simpler API. - fix: Various improvements. - fix the build - fix lint - remove test fixture readme - remove extra test file - tests - fix: Various improvements. (#6) - test: fixed build on Windows (#7) - src: formatted files - fixup - fixup - test: fixed failures - src: formatted files - src: fix arguments handling - test: formatted files - test: fix test library - deps: fix build on Windows - src: add suffix and types - fix: fix build - fix: fix build - fix: fix aix build Committers 1 - Paolo Insogna <paolo@cowtech.it> PR-URL: https://github.com/nodejs/node/pull/62072 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/62072 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> -------------------------------------------------------------------------------- ℹ This PR was created on Mon, 02 Mar 2026 14:43:52 GMT ✔ Approvals: 1 ✔ - Matteo Collina (@mcollina) (TSC): https://github.com/nodejs/node/pull/62072#pullrequestreview-4097491528 ✔ Last GitHub CI successful ℹ Last Full PR CI on 2026-04-13T09:13:41Z: https://ci.nodejs.org/job/node-test-pull-request/72665/ - Querying data for job/node-test-pull-request/72665/ ✔ Build data downloaded ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ No git cherry-pick in progress ✔ No git am in progress ✔ No git rebase in progress -------------------------------------------------------------------------------- - Bringing origin/main up to date... From https://github.com/nodejs/node * branch main -> FETCH_HEAD ✔ origin/main is now up-to-date - Downloading patch for 62072 From https://github.com/nodejs/node * branch refs/pull/62072/merge -> FETCH_HEAD ✔ Fetched commits as d080801b01cf..5a69e55bc0f8 -------------------------------------------------------------------------------- Auto-merging configure.py [main a050f9361d] lib,src,test,doc: add node:ffi module Author: cjihrig <cjihrig@gmail.com> Date: Wed Feb 25 16:14:20 2026 -0500 251 files changed, 79178 insertions(+), 12 deletions(-) create mode 100644 deps/libffi/ChangeLog.old create mode 100644 deps/libffi/LICENSE create mode 100644 deps/libffi/LICENSE-BUILDTOOLS create mode 100644 deps/libffi/Makefile.am create mode 100644 deps/libffi/README.md create mode 100644 deps/libffi/acinclude.m4 create mode 100755 deps/libffi/autogen.sh create mode 100644 deps/libffi/config.guess create mode 100755 deps/libffi/config.sub create mode 100644 deps/libffi/configure.ac create mode 100644 deps/libffi/configure.host create mode 100644 deps/libffi/doc/Makefile.am create mode 100644 deps/libffi/doc/libffi.texi create mode 100644 deps/libffi/doc/version.texi create mode 100644 deps/libffi/generate-configure-headers.py create mode 100755 deps/libffi/generate-darwin-source-and-headers.py create mode 100644 deps/libffi/generate-headers.py create mode 100644 deps/libffi/include/Makefile.am create mode 100644 deps/libffi/include/ffi.h.in create mode 100644 deps/libffi/include/ffi_cfi.h create mode 100644 deps/libffi/include/ffi_common.h create mode 100644 deps/libffi/include/tramp.h create mode 100644 deps/libffi/libffi.gyp create mode 100644 deps/libffi/libffi.map.in create mode 100644 deps/libffi/libffi.pc.in create mode 100755 deps/libffi/libtool-ldflags create mode 100644 deps/libffi/libtool-version create mode 100644 deps/libffi/m4/asmcfi.m4 create mode 100644 deps/libffi/m4/ax_append_flag.m4 create mode 100644 deps/libffi/m4/ax_cc_maxopt.m4 create mode 100644 deps/libffi/m4/ax_cflags_warn_all.m4 create mode 100644 deps/libffi/m4/ax_check_compile_flag.m4 create mode 100644 deps/libffi/m4/ax_compiler_vendor.m4 create mode 100644 deps/libffi/m4/ax_configure_args.m4 create mode 100644 deps/libffi/m4/ax_enable_builddir.m4 create mode 100644 deps/libffi/m4/ax_gcc_archflag.m4 create mode 100644 deps/libffi/m4/ax_gcc_x86_cpuid.m4 create mode 100644 deps/libffi/m4/ax_prepend_flag.m4 create mode 100644 deps/libffi/m4/ax_require_defined.m4 create mode 100644 deps/libffi/make_sunver.pl create mode 100644 deps/libffi/man/Makefile.am create mode 100644 deps/libffi/man/ffi.3 create mode 100644 deps/libffi/man/ffi_call.3 create mode 100644 deps/libffi/man/ffi_prep_cif.3 create mode 100644 deps/libffi/man/ffi_prep_cif_var.3 create mode 100644 deps/libffi/msvc_build/aarch64/aarch64_include/ffi.h create mode 100644 deps/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h create mode 100755 deps/libffi/msvcc.sh create mode 100644 deps/libffi/src/aarch64/ffi.c create mode 100644 deps/libffi/src/aarch64/ffitarget.h create mode 100644 deps/libffi/src/aarch64/internal.h create mode 100644 deps/libffi/src/aarch64/sysv.S create mode 100644 deps/libffi/src/aarch64/win64_armasm.S create mode 100644 deps/libffi/src/alpha/ffi.c create mode 100644 deps/libffi/src/alpha/ffitarget.h create mode 100644 deps/libffi/src/alpha/internal.h create mode 100644 deps/libffi/src/alpha/osf.S create mode 100644 deps/libffi/src/arc/arcompact.S create mode 100644 deps/libffi/src/arc/ffi.c create mode 100644 deps/libffi/src/arc/ffitarget.h create mode 100644 deps/libffi/src/arm/ffi.c create mode 100644 deps/libffi/src/arm/ffitarget.h create mode 100644 deps/libffi/src/arm/internal.h create mode 100644 deps/libffi/src/arm/sysv.S create mode 100644 deps/libffi/src/arm/sysv_msvc_arm32.S create mode 100644 deps/libffi/src/avr32/ffi.c create mode 100644 deps/libffi/src/avr32/ffitarget.h create mode 100644 deps/libffi/src/avr32/sysv.S create mode 100644 deps/libffi/src/bfin/ffi.c create mode 100644 deps/libffi/src/bfin/ffitarget.h create mode 100644 deps/libffi/src/bfin/sysv.S create mode 100644 deps/libffi/src/closures.c create mode 100644 deps/libffi/src/cris/ffi.c create mode 100644 deps/libffi/src/cris/ffitarget.h create mode 100644 deps/libffi/src/cris/sysv.S create mode 100644 deps/libffi/src/csky/ffi.c create mode 100644 deps/libffi/src/csky/ffitarget.h create mode 100644 deps/libffi/src/csky/sysv.S create mode 100644 deps/libffi/src/debug.c create mode 100644 deps/libffi/src/dlmalloc.c create mode 100644 deps/libffi/src/frv/eabi.S create mode 100644 deps/libffi/src/frv/ffi.c create mode 100644 deps/libffi/src/frv/ffitarget.h create mode 100644 deps/libffi/src/ia64/ffi.c create mode 100644 deps/libffi/src/ia64/ffitarget.h create mode 100644 deps/libffi/src/ia64/ia64_flags.h create mode 100644 deps/libffi/src/ia64/unix.S create mode 100644 deps/libffi/src/java_raw_api.c create mode 100644 deps/libffi/src/kvx/asm.h create mode 100644 deps/libffi/src/kvx/ffi.c create mode 100644 deps/libffi/src/kvx/ffitarget.h create mode 100644 deps/libffi/src/kvx/sysv.S create mode 100644 deps/libffi/src/loongarch64/ffi.c create mode 100644 deps/libffi/src/loongarch64/ffitarget.h create mode 100644 deps/libffi/src/loongarch64/sysv.S create mode 100644 deps/libffi/src/m32r/ffi.c create mode 100644 deps/libffi/src/m32r/ffitarget.h create mode 100644 deps/libffi/src/m32r/sysv.S create mode 100644 deps/libffi/src/m68k/ffi.c create mode 100644 deps/libffi/src/m68k/ffitarget.h create mode 100644 deps/libffi/src/m68k/sysv.S create mode 100644 deps/libffi/src/m88k/ffi.c create mode 100644 deps/libffi/src/m88k/ffitarget.h create mode 100644 deps/libffi/src/m88k/obsd.S create mode 100644 deps/libffi/src/metag/ffi.c create mode 100644 deps/libffi/src/metag/ffitarget.h create mode 100644 deps/libffi/src/metag/sysv.S create mode 100644 deps/libffi/src/microblaze/ffi.c create mode 100644 deps/libffi/src/microblaze/ffitarget.h create mode 100644 deps/libffi/src/microblaze/sysv.S create mode 100644 deps/libffi/src/mips/ffi.c create mode 100644 deps/libffi/src/mips/ffitarget.h create mode 100644 deps/libffi/src/mips/n32.S create mode 100644 deps/libffi/src/mips/o32.S create mode 100644 deps/libffi/src/moxie/eabi.S create mode 100644 deps/libffi/src/moxie/ffi.c create mode 100644 deps/libffi/src/moxie/ffitarget.h create mode 100644 deps/libffi/src/or1k/ffi.c create mode 100644 deps/libffi/src/or1k/ffitarget.h create mode 100644 deps/libffi/src/or1k/sysv.S create mode 100644 deps/libffi/src/pa/ffi.c create mode 100644 deps/libffi/src/pa/ffi64.c create mode 100644 deps/libffi/src/pa/ffitarget.h create mode 100644 deps/libffi/src/pa/hpux32.S create mode 100644 deps/libffi/src/pa/hpux64.S create mode 100644 deps/libffi/src/pa/linux.S create mode 100644 deps/libffi/src/powerpc/aix.S create mode 100644 deps/libffi/src/powerpc/aix_closure.S create mode 100644 deps/libffi/src/powerpc/asm.h create mode 100644 deps/libffi/src/powerpc/darwin.S create mode 100644 deps/libffi/src/powerpc/darwin_closure.S create mode 100644 deps/libffi/src/powerpc/ffi.c create mode 100644 deps/libffi/src/powerpc/ffi_darwin.c create mode 100644 deps/libffi/src/powerpc/ffi_linux64.c create mode 100644 deps/libffi/src/powerpc/ffi_powerpc.h create mode 100644 deps/libffi/src/powerpc/ffi_sysv.c create mode 100644 deps/libffi/src/powerpc/ffitarget.h create mode 100644 deps/libffi/src/powerpc/internal.h create mode 100644 deps/libffi/src/powerpc/linux64.S create mode 100644 deps/libffi/src/powerpc/linux64_closure.S create mode 100644 deps/libffi/src/powerpc/ppc_closure.S create mode 100644 deps/libffi/src/powerpc/sysv.S create mode 100644 deps/libffi/src/powerpc/t-aix create mode 100644 deps/libffi/src/prep_cif.c create mode 100644 deps/libffi/src/raw_api.c create mode 100644 deps/libffi/src/riscv/ffi.c create mode 100644 deps/libffi/src/riscv/ffitarget.h create mode 100644 deps/libffi/src/riscv/sysv.S create mode 100644 deps/libffi/src/s390/ffi.c create mode 100644 deps/libffi/src/s390/ffitarget.h create mode 100644 deps/libffi/src/s390/internal.h create mode 100644 deps/libffi/src/s390/sysv.S create mode 100644 deps/libffi/src/sh/ffi.c create mode 100644 deps/libffi/src/sh/ffitarget.h create mode 100644 deps/libffi/src/sh/sysv.S create mode 100644 deps/libffi/src/sh64/ffi.c create mode 100644 deps/libffi/src/sh64/ffitarget.h create mode 100644 deps/libffi/src/sh64/sysv.S create mode 100644 deps/libffi/src/sparc/ffi.c create mode 100644 deps/libffi/src/sparc/ffi64.c create mode 100644 deps/libffi/src/sparc/ffitarget.h create mode 100644 deps/libffi/src/sparc/internal.h create mode 100644 deps/libffi/src/sparc/v8.S create mode 100644 deps/libffi/src/sparc/v9.S create mode 100644 deps/libffi/src/tile/ffi.c create mode 100644 deps/libffi/src/tile/ffitarget.h create mode 100644 deps/libffi/src/tile/tile.S create mode 100644 deps/libffi/src/tramp.c create mode 100644 deps/libffi/src/types.c create mode 100644 deps/libffi/src/vax/elfbsd.S create mode 100644 deps/libffi/src/vax/ffi.c create mode 100644 deps/libffi/src/vax/ffitarget.h create mode 100644 deps/libffi/src/wasm/ffi.c create mode 100644 deps/libffi/src/wasm/ffitarget.h create mode 100644 deps/libffi/src/x86/asmnames.h create mode 100644 deps/libffi/src/x86/ffi.c create mode 100644 deps/libffi/src/x86/ffi64.c create mode 100644 deps/libffi/src/x86/ffitarget.h create mode 100644 deps/libffi/src/x86/ffiw64.c create mode 100644 deps/libffi/src/x86/internal.h create mode 100644 deps/libffi/src/x86/internal64.h create mode 100644 deps/libffi/src/x86/sysv.S create mode 100644 deps/libffi/src/x86/sysv_intel.S create mode 100644 deps/libffi/src/x86/unix64.S create mode 100644 deps/libffi/src/x86/win64.S create mode 100644 deps/libffi/src/x86/win64_intel.S create mode 100644 deps/libffi/src/xtensa/ffi.c create mode 100644 deps/libffi/src/xtensa/ffitarget.h create mode 100644 deps/libffi/src/xtensa/sysv.S create mode 100644 deps/libffi/stamp-h.in create mode 100644 doc/api/ffi.md create mode 100644 lib/ffi.js create mode 100644 src/ffi/dynamic_library.cc create mode 100644 src/ffi/node_ffi.cc create mode 100644 src/ffi/node_ffi.h create mode 100644 src/ffi/pointer_object.cc create mode 100644 src/ffi/types.cc create mode 100644 src/ffi/unsafe_callback.cc create mode 100644 src/ffi/unsafe_fn_pointer.cc create mode 100644 src/ffi/unsafe_pointer.cc create mode 100644 src/ffi/unsafe_pointer_view.cc create mode 100644 src/permission/ffi_permission.cc create mode 100644 src/permission/ffi_permission.h create mode 100644 test/ffi/.gitignore create mode 100644 test/ffi/ffi.status create mode 100644 test/ffi/fixture_library/README.md create mode 100644 test/ffi/fixture_library/binding.gyp create mode 100644 test/ffi/fixture_library/ffi_test_library.c create mode 100644 test/ffi/test-ffi-call.js create mode 100644 test/ffi/test-ffi-callback.js create mode 100644 test/ffi/test-ffi-calls.js create mode 100644 test/ffi/test-ffi-dynamic-library.js create mode 100644 test/ffi/test-ffi-module.js create mode 100644 test/ffi/test-ffi-permissions.js create mode 100644 test/ffi/test-ffi-struct-basic.js create mode 100644 test/ffi/test-ffi-struct-complex.js create mode 100644 test/ffi/test-ffi-struct-types.js create mode 100644 test/ffi/test-ffi-unsafe-fn-pointer.js create mode 100644 test/ffi/test-ffi-unsafe-pointer-view.js create mode 100644 test/ffi/test-ffi-unsafe-pointer.js create mode 100644 test/ffi/testcfg.py create mode 100644 test/parallel/test-permission-allow-ffi-cli.js Auto-merging configure.py [main cb77eaa7f4] ffi: Refactor to simpler API. Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Mar 12 11:28:00 2026 +0100 47 files changed, 3764 insertions(+), 5225 deletions(-) create mode 100644 src/ffi/data.cc delete mode 100644 src/ffi/dynamic_library.cc delete mode 100644 src/ffi/node_ffi.cc delete mode 100644 src/ffi/node_ffi.h delete mode 100644 src/ffi/pointer_object.cc delete mode 100644 src/ffi/unsafe_callback.cc delete mode 100644 src/ffi/unsafe_fn_pointer.cc delete mode 100644 src/ffi/unsafe_pointer.cc delete mode 100644 src/ffi/unsafe_pointer_view.cc create mode 100644 src/node_ffi.cc create mode 100644 src/node_ffi.h create mode 100644 test/ffi/ffi-test-common.js create mode 100644 test/ffi/fixture_library/ffi_test_library.def delete mode 100644 test/ffi/test-ffi-call.js delete mode 100644 test/ffi/test-ffi-callback.js create mode 100644 test/ffi/test-ffi-memory.js delete mode 100644 test/ffi/test-ffi-struct-basic.js delete mode 100644 test/ffi/test-ffi-struct-complex.js delete mode 100644 test/ffi/test-ffi-struct-types.js delete mode 100644 test/ffi/test-ffi-unsafe-fn-pointer.js delete mode 100644 test/ffi/test-ffi-unsafe-pointer-view.js delete mode 100644 test/ffi/test-ffi-unsafe-pointer.js Auto-merging configure.py [main a5167aae12] fix: Various improvements. Author: Paolo Insogna <paolo@cowtech.it> Date: Tue Mar 17 13:32:46 2026 +0100 32 files changed, 502 insertions(+), 95 deletions(-) create mode 100644 test/parallel/test-ffi-missing-build.js create mode 100755 tools/dep_updaters/update-libffi.sh [main 76d1218124] fix the build Author: cjihrig <cjihrig@gmail.com> Date: Wed Mar 18 21:05:43 2026 -0400 1 file changed, 8 insertions(+), 4 deletions(-) [main f6870739f5] fix lint Author: cjihrig <cjihrig@gmail.com> Date: Wed Mar 18 21:26:00 2026 -0400 14 files changed, 356 insertions(+), 376 deletions(-) [main bd7fe57d59] remove test fixture readme Author: cjihrig <cjihrig@gmail.com> Date: Wed Mar 18 21:52:43 2026 -0400 1 file changed, 42 deletions(-) delete mode 100644 test/ffi/fixture_library/README.md [main 76fd5a0566] remove extra test file Author: cjihrig <cjihrig@gmail.com> Date: Wed Mar 18 21:54:48 2026 -0400 1 file changed, 43 deletions(-) delete mode 100644 test/ffi/fixture_library/ffi_test_library.def [main 9908960f9b] tests Author: cjihrig <cjihrig@gmail.com> Date: Wed Mar 18 22:47:54 2026 -0400 7 files changed, 369 insertions(+), 355 deletions(-) create mode 100644 test/ffi/test-ffi-weakref-calls.js Auto-merging configure.py [main 832a1e5674] fix: Various improvements. (#6) Author: Paolo Insogna <paolo@cowtech.it> Date: Wed Mar 25 22:29:38 2026 +0100 39 files changed, 1726 insertions(+), 821 deletions(-) create mode 100644 deps/libffi/preprocess_asm.py create mode 100644 src/ffi/data.h create mode 100644 src/ffi/types.h create mode 100644 test/ffi/test-ffi-permission-allow-cli.js create mode 100644 test/ffi/test-ffi-permission-audit.js delete mode 100644 test/parallel/test-permission-allow-ffi-cli.js [main 563a0ba176] test: fixed build on Windows (#7) Author: Paolo Insogna <paolo@cowtech.it> Date: Fri Mar 27 13:19:57 2026 +0100 3 files changed, 89 insertions(+), 74 deletions(-) [main 5bfabf72cc] src: formatted files Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Apr 2 20:32:32 2026 +0200 2 files changed, 6 insertions(+), 9 deletions(-) [main 7d755b33f5] fixup Author: Paolo Insogna <paolo@cowtech.it> Date: Fri Apr 3 08:21:10 2026 +0200 5 files changed, 127 insertions(+), 72 deletions(-) [main 411a991d63] fixup Author: Paolo Insogna <paolo@cowtech.it> Date: Fri Apr 3 09:13:07 2026 +0200 1 file changed, 23 insertions(+), 17 deletions(-) [main 5a8cb62053] test: fixed failures Author: Paolo Insogna <paolo@cowtech.it> Date: Tue Apr 7 13:16:52 2026 +0200 2 files changed, 12 insertions(+), 9 deletions(-) [main 7cdfdff8e2] src: formatted files Author: Paolo Insogna <paolo@cowtech.it> Date: Tue Apr 7 14:15:43 2026 +0200 1 file changed, 1 deletion(-) [main 6597fce628] src: fix arguments handling Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Apr 9 11:19:05 2026 +0200 2 files changed, 31 insertions(+), 15 deletions(-) [main 0495d535f5] test: formatted files Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Apr 9 11:48:29 2026 +0200 1 file changed, 7 insertions(+), 7 deletions(-) [main b895e0309f] test: fix test library Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Apr 9 13:08:21 2026 +0200 1 file changed, 12 insertions(+), 7 deletions(-) [main da840f0a40] deps: fix build on Windows Author: Paolo Insogna <paolo@cowtech.it> Date: Thu Apr 9 17:11:41 2026 +0200 1 file changed, 34 insertions(+), 1 deletion(-) [main 8d936bbc81] src: add suffix and types Author: Paolo Insogna <paolo@cowtech.it> Date: Sun Apr 12 15:34:00 2026 +0200 5 files changed, 108 insertions(+), 1 deletion(-) [main a667698b52] fix: fix build Author: Paolo Insogna <paolo@cowtech.it> Date: Mon Apr 13 06:18:30 2026 +0200 1 file changed, 7 insertions(+), 1 deletion(-) [main 368020b71f] fix: fix build Author: Paolo Insogna <paolo@cowtech.it> Date: Mon Apr 13 06:58:53 2026 +0200 2 files changed, 51 insertions(+), 8 deletions(-) [main b6e07db0a3] fix: fix aix build Author: Paolo Insogna <paolo@cowtech.it> Date: Mon Apr 13 08:50:02 2026 +0200 1 file changed, 4 insertions(+), 7 deletions(-) ✔ Patches applied There are 23 commits in the PR. Attempting autorebase. (node:387) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated. (Use `node --trace-deprecation ...` to show where the warning was created) Rebasing (2/46) Executing: git node land --amend --yes --------------------------------- New Message ---------------------------------- PR-URL: https://github.com/nodejs/node/pull/62072 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> -------------------------------------------------------------------------------- [detached HEAD 648f0af1e8] PR-URL: https://github.com/nodejs/node/pull/62072 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Author: cjihrig <cjihrig@gmail.com> Date: Wed Feb 25 16:14:20 2026 -0500 251 files changed, 79178 insertions(+), 12 deletions(-) create mode 100644 deps/libffi/ChangeLog.old create mode 100644 deps/libffi/LICENSE create mode 100644 deps/libffi/LICENSE-BUILDTOOLS create mode 100644 deps/libffi/Makefile.am create mode 100644 deps/libffi/README.md create mode 100644 deps/libffi/acinclude.m4 create mode 100755 deps/libffi/autogen.sh create mode 100644 deps/libffi/config.guess create mode 100755 deps/libffi/config.sub create mode 100644 deps/libffi/configure.ac create mode 100644 deps/libffi/configure.host create mode 100644 deps/libffi/doc/Makefile.am create mode 100644 deps/libffi/doc/libffi.texi create mode 100644 deps/libffi/doc/version.texi create mode 100644 deps/libffi/generate-configure-headers.py create mode 100755 deps/libffi/generate-darwin-source-and-headers.py create mode 100644 deps/libffi/generate-headers.py create mode 100644 deps/libffi/include/Makefile.am create mode 100644 deps/libffi/include/ffi.h.in create mode 100644 deps/libffi/include/ffi_cfi.h create mode 100644 deps/libffi/include/ffi_common.h create mode 100644 deps/libffi/include/tramp.h create mode 100644 deps/libffi/libffi.gyp create mode 100644 deps/libffi/libffi.map.in create mode 100644 deps/libffi/libffi.pc.in create mode 100755 deps/libffi/libtool-ldflags create mode 100644 deps/libffi/libtool-version create mode 100644 deps/libffi/m4/asmcfi.m4 create mode 100644 deps/libffi/m4/ax_append_flag.m4 create mode 100644 deps/libffi/m4/ax_cc_maxopt.m4 create mode 100644 deps/libffi/m4/ax_cflags_warn_all.m4 create mode 100644 deps/libffi/m4/ax_check_compile_flag.m4 create mode 100644 deps/libffi/m4/ax_compiler_vendor.m4 create mode 100644 deps/libffi/m4/ax_configure_args.m4 create mode 100644 deps/libffi/m4/ax_enable_builddir.m4 create mode 100644 deps/libffi/m4/ax_gcc_archflag.m4 create mode 100644 deps/libffi/m4/ax_gcc_x86_cpuid.m4 create mode 100644 deps/libffi/m4/ax_prepend_flag.m4 create mode 100644 deps/libffi/m4/ax_require_defined.m4 create mode 100644 deps/libffi/make_sunver.pl create mode 100644 deps/libffi/man/Makefile.am create mode 100644 deps/libffi/man/ffi.3 create mode 100644 deps/libffi/man/ffi_call.3 create mode 100644 deps/libffi/man/ffi_prep_cif.3 create mode 100644 deps/libffi/man/ffi_prep_cif_var.3 create mode 100644 deps/libffi/msvc_build/aarch64/aarch64_include/ffi.h create mode 100644 deps/libffi/msvc_build/aarch64/aarch64_include/fficonfig.h create mode 100755 deps/libffi/msvcc.sh create mode 100644 deps/libffi/src/aarch64/ffi.c create mode 100644 deps/libffi/src/aarch64/ffitarget.h create mode 100644 deps/libffi/src/aarch64/internal.h create mode 100644 deps/libffi/src/aarch64/sysv.S create mode 100644 deps/libffi/src/aarch64/win64_armasm.S create mode 100644 deps/libffi/src/alpha/ffi.c create mode 100644 deps/libffi/src/alpha/ffitarget.h create mode 100644 deps/libffi/src/alpha/internal.h create mode 100644 deps/libffi/src/alpha/osf.S create mode 100644 deps/libffi/src/arc/arcompact.S create mode 100644 deps/libffi/src/arc/ffi.c create mode 100644 deps/libffi/src/arc/ffitarget.h create mode 100644 deps/libffi/src/arm/ffi.c create mode 100644 deps/libffi/src/arm/ffitarget.h create mode 100644 deps/libffi/src/arm/internal.h create mode 100644 deps/libffi/src/arm/sysv.S create mode 100644 deps/libffi/src/arm/sysv_msvc_arm32.S create mode 100644 deps/libffi/src/avr32/ffi.c create mode 100644 deps/libffi/src/avr32/ffitarget.h create mode 100644 deps/libffi/src/avr32/sysv.S create mode 100644 deps/libffi/src/bfin/ffi.c create mode 100644 deps/libffi/src/bfin/ffitarget.h create mode 100644 deps/libffi/src/bfin/sysv.S create mode 100644 deps/libffi/src/closures.c create mode 100644 deps/libffi/src/cris/ffi.c create mode 100644 deps/libffi/src/cris/ffitarget.h create mode 100644 deps/libffi/src/cris/sysv.S create mode 100644 deps/libffi/src/csky/ffi.c create mode 100644 deps/libffi/src/csky/ffitarget.h create mode 100644 deps/libffi/src/csky/sysv.S create mode 100644 deps/libffi/src/debug.c create mode 100644 deps/libffi/src/dlmalloc.c create mode 100644 deps/libffi/src/frv/eabi.S create mode 100644 deps/libffi/src/frv/ffi.c create mode 100644 deps/libffi/src/frv/ffitarget.h create mode 100644 deps/libffi/src/ia64/ffi.c create mode 100644 deps/libffi/src/ia64/ffitarget.h create mode 100644 deps/libffi/src/ia64/ia64_flags.h create mode 100644 deps/libffi/src/ia64/unix.S create mode 100644 deps/libffi/src/java_raw_api.c create mode 100644 deps/libffi/src/kvx/asm.h create mode 100644 deps/libffi/src/kvx/ffi.c create mode 100644 deps/libffi/src/kvx/ffitarget.h create mode 100644 deps/libffi/src/kvx/sysv.S create mode 100644 deps/libffi/src/loongarch64/ffi.c create mode 100644 deps/libffi/src/loongarch64/ffitarget.h create mode 100644 deps/libffi/src/loongarch64/sysv.S create mode 100644 deps/libffi/src/m32r/ffi.c create mode 100644 deps/libffi/src/m32r/ffitarget.h create mode 100644 deps/libffi/src/m32r/sysv.S create mode 100644 deps/libffi/src/m68k/ffi.c create mode 100644 deps/libffi/src/m68k/ffitarget.h create mode 100644 deps/libffi/src/m68k/sysv.S create mode 100644 deps/libffi/src/m88k/ffi.c create mode 100644 deps/libffi/src/m88k/ffitarget.h create mode 100644 deps/libffi/src/m88k/obsd.S create mode 100644 deps/libffi/src/metag/ffi.c create mode 100644 deps/libffi/src/metag/ffitarget.h create mode 100644 deps/libffi/src/metag/sysv.S create mode 100644 deps/libffi/src/microblaze/ffi.c create mode 100644 deps/libffi/src/microblaze/ffitarget.h create mode 100644 deps/libffi/src/microblaze/sysv.S create mode 100644 deps/libffi/src/mips/ffi.c create mode 100644 deps/libffi/src/mips/ffitarget.h create mode 100644 deps/libffi/src/mips/n32.S create mode 100644 deps/libffi/src/mips/o32.S create mode 100644 deps/libffi/src/moxie/eabi.S create mode 100644 deps/libffi/src/moxie/ffi.c create mode 100644 deps/libffi/src/moxie/ffitarget.h create mode 100644 deps/libffi/src/or1k/ffi.c create mode 100644 deps/libffi/src/or1k/ffitarget.h create mode 100644 deps/libffi/src/or1k/sysv.S create mode 100644 deps/libffi/src/pa/ffi.c create mode 100644 deps/libffi/src/pa/ffi64.c create mode 100644 deps/libffi/src/pa/ffitarget.h create mode 100644 deps/libffi/src/pa/hpux32.S create mode 100644 deps/libffi/src/pa/hpux64.S create mode 100644 deps/libffi/src/pa/linux.S create mode 100644 deps/libffi/src/powerpc/aix.S create mode 100644 deps/libffi/src/powerpc/aix_closure.S create mode 100644 deps/libffi/src/powerpc/asm.h create mode 100644 deps/libffi/src/powerpc/darwin.S create mode 100644 deps/libffi/src/powerpc/darwin_closure.S create mode 100644 deps/libffi/src/powerpc/ffi.c create mode 100644 deps/libffi/src/powerpc/ffi_darwin.c create mode 100644 deps/libffi/src/powerpc/ffi_linux64.c create mode 100644 deps/libffi/src/powerpc/ffi_powerpc.h create mode 100644 deps/libffi/src/powerpc/ffi_sysv.c create mode 100644 deps/libffi/src/powerpc/ffitarget.h create mode 100644 deps/libffi/src/powerpc/internal.h create mode 100644 deps/libffi/src/powerpc/linux64.S create mode 100644 deps/libffi/src/powerpc/linux64_closure.S create mode 100644 deps/libffi/src/powerpc/ppc_closure.S create mode 100644 deps/libffi/src/powerpc/sysv.S create mode 100644 deps/libffi/src/powerpc/t-aix create mode 100644 deps/libffi/src/prep_cif.c create mode 100644 deps/libffi/src/raw_api.c create mode 100644 deps/libffi/src/riscv/ffi.c create mode 100644 deps/libffi/src/riscv/ffitarget.h create mode 100644 deps/libffi/src/riscv/sysv.S create mode 100644 deps/libffi/src/s390/ffi.c create mode 100644 deps/libffi/src/s390/ffitarget.h create mode 100644 deps/libffi/src/s390/internal.h create mode 100644 deps/libffi/src/s390/sysv.S create mode 100644 deps/libffi/src/sh/ffi.c create mode 100644 deps/libffi/src/sh/ffitarget.h create mode 100644 deps/libffi/src/sh/sysv.S create mode 100644 deps/libffi/src/sh64/ffi.c create mode 100644 deps/libffi/src/sh64/ffitarget.h create mode 100644 deps/libffi/src/sh64/sysv.S create mode 100644 deps/libffi/src/sparc/ffi.c create mode 100644 deps/libffi/src/sparc/ffi64.c create mode 100644 deps/libffi/src/sparc/ffitarget.h create mode 100644 deps/libffi/src/sparc/internal.h create mode 100644 deps/libffi/src/sparc/v8.S create mode 100644 deps/libffi/src/sparc/v9.S create mode 100644 deps/libffi/src/tile/ffi.c create mode 100644 deps/libffi/src/tile/ffitarget.h create mode 100644 deps/libffi/src/tile/tile.S create mode 100644 deps/libffi/src/tramp.c create mode 100644 deps/libffi/src/types.c create mode 100644 deps/libffi/src/vax/elfbsd.S create mode 100644 deps/libffi/src/vax/ffi.c create mode 100644 deps/libffi/src/vax/ffitarget.h create mode 100644 deps/libffi/src/wasm/ffi.c create mode 100644 deps/libffi/src/wasm/ffitarget.h create mode 100644 deps/libffi/src/x86/asmnames.h create mode 100644 deps/libffi/src/x86/ffi.c create mode 100644 deps/libffi/src/x86/ffi64.c create mode 100644 deps/libffi/src/x86/ffitarget.h create mode 100644 deps/libffi/src/x86/ffiw64.c create mode 100644 deps/libffi/src/x86/internal.h create mode 100644 deps/libffi/src/x86/internal64.h create mode 100644 deps/libffi/src/x86/sysv.S create mode 100644 deps/libffi/src/x86/sysv_intel.S create mode 100644 deps/libffi/src/x86/unix64.S create mode 100644 deps/libffi/src/x86/win64.S create mode 100644 deps/libffi/src/x86/win64_intel.S create mode 100644 deps/libffi/src/xtensa/ffi.c create mode 100644 deps/libffi/src/xtensa/ffitarget.h create mode 100644 deps/libffi/src/xtensa/sysv.S create mode 100644 deps/libffi/stamp-h.in create mode 100644 doc/api/ffi.md create mode 100644 lib/ffi.js create mode 100644 src/ffi/dynamic_library.cc create mode 100644 src/ffi/node_ffi.cc create mode 100644 src/ffi/node_ffi.h create mode 100644 src/ffi/pointer_object.cc create mode 100644 src/ffi/types.cc create mode 100644 src/ffi/unsafe_callback.cc create mode 100644 src/ffi/unsafe_fn_pointer.cc create mode 100644 src/ffi/unsafe_pointer.cc create mode 100644 src/ffi/unsafe_pointer_view.cc create mode 100644 src/permission/ffi_permission.cc create mode 100644 src/permission/ffi_permission.h create mode 100644 test/ffi/.gitignore create mode 100644 test/ffi/ffi.status create mode 100644 test/ffi/fixture_library/README.md create mode 100644 test/ffi/fixture_library/binding.gyp create mode 100644 test/ffi/fixture_library/ffi_test_library.c create mode 100644 test/ffi/test-ffi-call.js create mode 100644 test/ffi/test-ffi-callback.js create mode 100644 test/ffi/test-ffi-calls.js create mode 100644 test/ffi/test-ffi-dynamic-library.js create mode 100644 test/ffi/test-ffi-module.js create mode 100644 test/ffi/test-ffi-permissions.js create mode 100644 test/ffi/test-ffi-struct-basic.js create mode 100644 test/ffi/test-ffi-struct-complex.js create mode 100644 test/ffi/test-ffi-struct-types.js create mode 100644 test/ffi/test-ffi-unsafe-fn-pointer.js create mode 100644 test/ffi/test-ffi-unsafe-pointer-view.js create mode 100644 test/ffi/test-ffi-unsafe-pointer.js create mode 100644 test/ffi/testcfg.py create mode 100644 test/parallel/test-permission-allow-ffi-cli.js Rebasing (3/46) Rebasing (4/46) Executing: git node land --amend --yes --------------------------------- New Message ---------------------------------- ffi: Refactor to simpler API.
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Paolo Insogna <paolo@cowtech.it> Signed-off-by: Paolo Insogna <paolo@cowtech.it>
|
PR-URL: #62072 Co-authored-by: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Bryan English <bryan@bryanenglish.com>
|
Landed in d0fa608 |
| FPrintF(stderr, | ||
| "Callbacks can only be invoked on the system thread they were " | ||
| "created on\n"); | ||
| ABORT(); |
There was a problem hiding this comment.
I can understand that this may be a bit tricky but I think ideally we shouldn't do a hard abort on the process. If we can find a way to throw a regular exception that would be better.
|
|
||
| if (args.Length() > 0) { | ||
| if (!args[0]->IsObject() || args[0]->IsArray()) { | ||
| env->ThrowTypeError("Functions signatures must be an object"); |
There was a problem hiding this comment.
This should use the THROW_ERR_... so it throws a proper Node.js error.
|
The
notable-change
Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment. Otherwise, the commit will be placed in the Other Notable Changes section. |
|
Why close this PR |
This is not ready for review yet. Just opening to see if this is something the project is still interested in.